﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace pdfer.Filters
{
    internal interface IFilter
    {
        internal const String Name_ASCIIHexDecode = "/ASCIIHexDecode";
        internal const String Name_ASCIIHexDecode2 = "/AHx";

        internal const String Name_ASCII85Decode = "/ASCII85Decode";
        internal const String Name_ASCII85Decode2 = "/A85";
        
        internal const String Name_LZWDecode = "/LZWDecode";
        internal const String Name_LZWDecode2 = "/LZW";

        internal const String Name_FlateDecode = "/FlateDecode";
        internal const String Name_FlateDecode2 = "/Fl";
        
        internal const String Name_RunLengthDecode = "/RunLengthDecode";
        internal const String Name_RunLengthDecode2 = "/RL";

        internal const String Name_CCITTFaxDecode = "/CCITTFaxDecode";
        internal const String Name_CCITTFaxDecode2 = "/CCF";

        internal const String Name_DCTDecode = "/DCTDecode";
        internal const String Name_DCTDecode2 = "/DCT";

        internal const String Name_JBIG2Decode = "/JBIG2Decode";
        internal const String Name_JPXDecode = "/JPXDecode";


        internal const String Name_Crypt = "/Crypt";


        /// <summary>
        /// 解压缩 解码
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public Byte[] Decode (ReadOnlySpan<Byte> input);

        /// <summary>
        /// 压缩 编码
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public Byte[] Encode (ReadOnlySpan<Byte> input);
    }
}
